Skip to content

Click Rate redesign: split delay vs. frequency + Taneth theme#1

Merged
Quadstronaut merged 5 commits into
masterfrom
feat/click-rate-redesign
Apr 26, 2026
Merged

Click Rate redesign: split delay vs. frequency + Taneth theme#1
Quadstronaut merged 5 commits into
masterfrom
feat/click-rate-redesign

Conversation

@Quadstronaut
Copy link
Copy Markdown
Owner

Summary

The Click Rate input previously mixed two paradigms (delay-per-click vs. clicks-per-time-unit) into a single value+unit row. This PR splits them into a Mode radio (Delay / Frequency) that swaps the unit dropdown's contents and shows a live conversion hint, so users no longer have to mix milliseconds and rates in the same control.

Bundles the Taneth theme refresh that was already in the working tree.

Highlights

  • UX: ◉ Delay ○ Frequency radios above a [value] [unit ▾] row, with a live ≈ 10 clicks/sec hint underneath. When the effective rate exceeds 100/s the hint turns red and reads ⚠ Very fast — input may not register reliably.
  • Units: Delay (ms / sec / min) and Frequency (per sec / per min / per hour).
  • Bounds: 1 ms ≤ delay ≤ 360 min, max 1000 clicks/sec — enforced in the parser, not just the UI.
  • Parser: additive only — every existing format (100ms, 10/s, 10cps, 600/min, 600cpm, 10 times per second, …) still parses. New tokens: s/sec/seconds, m/min/minutes, /h/cph/times per hour. CLI scripts are unaffected.
  • Settings migration: legacy "/s" and "/min" values silently migrate to (Frequency, per_sec) / (Frequency, per_min) on first load.
  • Tests: 38 new tests (39 → 77), covering new units, both bound boundaries, frequency/duration disambiguation, and settings migration from real legacy JSON shapes.

Out of scope

  • macOS / Linux tracks unchanged (their parsers are separate codebases).
  • No changes to mouse button, click type, location, stop conditions, or hotkeys.

Spec

Full design spec at docs/superpowers/specs/2026-04-25-click-rate-redesign-design.md.

Test plan

  • dotnet build windows/QuadClicker.csproj -c Release — clean
  • dotnet test windows/Tests/QuadClicker.Tests.csproj -c Release — 77 / 77 pass
  • GUI smoke launch with existing legacy settings.json — migrated silently, no crash
  • CLI --version / --help still work
  • Manual verification: toggle Mode radios, watch unit dropdown swap and hint update live
  • Manual verification: type a value > 100/s and see the very-fast warning
  • Manual verification: settings persist across launches in the new schema

🤖 Generated with Claude Code

Quadstronaut and others added 5 commits April 25, 2026 19:48
Refreshes the dark theme from neutral grey/green to the Taneth palette
(deep-green surfaces, warm gold accent). Adds AccentForegroundBrush so
text on accent fills uses a dark color that meets WCAG AA contrast.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Splits the Click Rate input into a Mode radio (Delay/Frequency) plus
a unit dropdown that swaps with the mode, with a live conversion hint
and a "very fast" warning at >100/s.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Click Rate row now starts with a Mode radio (Delay / Frequency)
that swaps the unit dropdown's contents and shows a live conversion
hint, so users no longer have to mix milliseconds and rates in the
same control.

- Parser: adds sec/min/hour units; enforces 1 ms ≤ delay ≤ 360 min and
  ≤ 1000 clicks/sec via MinDelayMs / MaxDelayMs constants. All previous
  formats keep parsing, so CLI scripts are unaffected.
- Settings: new ClickRateMode field; legacy "/s" and "/min" values
  silently migrate to (Frequency, per_sec) and (Frequency, per_min) on
  first load.
- UI: live "≈ X clicks/sec" / "≈ X ms between clicks" hint; switches
  to Danger color with "Very fast — input may not register reliably"
  warning when effective rate exceeds 100/s.
- Tests: 38 new tests cover new units, both bound boundaries,
  frequency/duration disambiguation, and settings migration.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The first Test step ran `dotnet test --no-build` against a path that
nothing produced, causing every Windows build since the workflow was
added to fail before reaching the second Test step. Drop the broken
step; the remaining `dotnet test` does build + run in one shot, which
is what the test project needs because it Compile-Includes source from
the main project.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- MainWindow: 500 → 458 px to match the 16 px side margins after the
  Click Rate block grew to two rows.
- release.yml: switch to self-contained PublishSingleFile so the
  released artifact runs on any Windows machine without requiring the
  .NET 10 preview runtime. Adds compression to keep size down.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Quadstronaut Quadstronaut merged commit 1faaf39 into master Apr 26, 2026
3 checks passed
@Quadstronaut Quadstronaut deleted the feat/click-rate-redesign branch April 26, 2026 03:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant